home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / xlib / mdraw / mdraw.doc < prev    next >
Text File  |  1994-03-06  |  10KB  |  231 lines

  1. ------------------------------------------------------------------------------
  2.                                    MDraw
  3.                       A neat little sprite editor for Xlib
  4.                                 by Matt Miller
  5. ------------------------------------------------------------------------------
  6.  
  7. WHAT MDRAW IS AND ISN'T:
  8.  
  9.    MDraw is a sprite editor designed to create sprites for use in games.
  10.    It is really a paint program, not a draw program, but MPaint just
  11.        doesn't roll off the tongue in quite the same way.
  12.    If there is already something else out there named MDraw, sorry.
  13.    MDraw was created for my use. It does what I need it to do.
  14.    If you are lucky, you may find it useful as well.
  15.    It only runs in mode X at 320x240. I like square pixels.
  16.    It can save in PBM and CBM formats. PBM is probably useful no matter
  17.        what mode X library you are using. Compiled bitmaps are probably
  18.        only useful if you are using Xlib. They are realllly fast.
  19.    It can load PBMs, but not CBMs. Sorry.
  20.    It can't deal with anything bigger than 64x64. What kind of sprite is
  21.        bigger than that anyway?
  22.       
  23.  
  24.  
  25. COPYRIGHT AND STUFF:
  26.  
  27.    MDraw is copyright (c) 1994 Matt Miller. But, you are free to use it 
  28.    and distribute it at no cost.
  29.  
  30.  
  31. WHAT TO DO IF YOU LIKE AND USE THIS:
  32.   
  33.    Send me e-mail. My address is at the end of this document.
  34.  
  35.  
  36. WHAT TO DO IF YOU WANT SOURCE CODE:
  37.  
  38.    I put a lot of work into this. Probably more than I should have. If you
  39.    would like to have the source code, e-mail me and ask for it. I'll give
  40.    it to you in trade for any cool original source you have.
  41.  
  42. UPDATES AND UPGRADES:
  43.  
  44.    There won't be any.
  45.  
  46.  
  47. HOW TO ACTUALLY USE MDRAW:
  48.  
  49.    Hopefully, it's mostly obvious. Some things do require a little 
  50.    explanation....
  51.  
  52. Main Draw Window: Okay, this shouldn't require -much- explaining. Here's
  53.    where you do the actual drawing. The important thing is that squares
  54.    with little grey dots are clear, not black. (They are palette color 0).
  55.    Oh, and the little blue tick marks around the edges mark off every five
  56.    pixels. A sort of no-frills ruler.
  57.  
  58. Actual Size Window: This little thing is what the sprite will actually look
  59.    like. The not-obvious thing is that by clicking here you can move the 
  60.    sprite. (Try it.)
  61.  
  62. Radiator: Sorry, had this blank space..... It doesn't do anything.
  63.  
  64. Pencil: This selects the pencil tool. Left click in the Main Draw Window
  65.    to draw one pixel, right click to erase.
  66.  
  67. Paintcan: This selects the floodfill tool. Pretty standard. Like with the
  68.    pencil, left click fills with the current color and right click fill-
  69.    erases.   
  70.    
  71. Circle: This is not God's Gift to Circles. Sorry. It only draws circles,
  72.    none of them fancy ovals here, no sir. Click on the top-left corner
  73.    of the circle, drag to the bottom right. I was too lazy to write my
  74.    own circle function, so I just used xlib's, which is pretty limited.
  75.  
  76. Horizontal Flip, Vertical Flip, Rotate: Yep.
  77.  
  78. Undo: What a cute icon, huh?
  79.  
  80. Info: Basically tells you to read this.
  81.  
  82. Current Color: (We're back to the left bottom side of the screen here.)
  83.    This shows what color you're drawing with right now. If you click on
  84.    it, it will make sure the current InstaColor is equal to the Current
  85.    Color. That will make sense later.
  86.  
  87.  
  88. ------------IMPORTANT NOTE ON COLORS!!!!!!!!--------------------------------
  89.  
  90. MDraw ONLY WORKS WITH MY PRESET PALETTE. IF YOU DON'T LIKE THIS, WRITE 
  91. YOUR OWN @#%^!* PAINT PROGRAM.
  92.    
  93. The palette is arranged this way:
  94.  
  95. 0     :  Black
  96. 1-15  :  System colors. (Whatever you want them to be.)
  97. 16-231:  Generated by this formula (in Matt's Wonderful PseudoCode):
  98.  
  99.          Red=0 to 5
  100.             Green=0 to 5
  101.                Blue=0 to 5
  102.                    index=index+1
  103.                       color[index]=Red*36 + Green*6 + Blue
  104.                Loop Blue
  105.             Loop Green
  106.          Loop Red
  107.  
  108.          The values 0-5 above correspond to 0,19,30,41,52, and 63, 
  109.          respectively. This gives a pretty smooth palette.
  110. 232-239: Multi-cultural flesh tones. Blended smoothly from (R=63,G=44,B=32)
  111.          to (R=32,G=20,B=11). Lack of browns is the main flaw in the above
  112.          scheme.
  113. 240-255: User colors. (I use this for colors that get rotated, for special
  114.          effects.)
  115.  
  116. Now, you are asking: What is the logic behind this scheme? 
  117.  
  118.  1st: It's really easy to find exactly the color you want, once you get the
  119.       hang of RGB color mixing, which isn't that tough.
  120.  2nd: You can easily blend between -any- colors. Most palette schemes are
  121.       great for shades of primary colors, but what if you want to go from
  122.       dark blue to yellow? This method makes it easy.
  123.  
  124. The main flaw is that there aren't very many good flesh tones. So the colors
  125. 232-239 make up for that....
  126.  
  127. Okay, back to your regularly scheduled documentation.
  128. ------------------------------------------------------------------------------   
  129.  
  130.  
  131. Color Mixer: This is the primary way to select colors. Increase and decrease
  132.    red, green, and blue values. Really simple.
  133.  
  134. InstaColors: These are the six colored buttons in the top row. They provide
  135.    a sort of working-palette-box. Open tubes of paint, so to speak. If you
  136.    click on one, the Current Color is changed to whatever that color is set
  137.    to. If you then change the color with the mixer, the selected InstaColor
  138.    is changed. This may sound confusing but in actual use it's really
  139.    practical.
  140.  
  141. QuickColors: This are the bottom three rows of colored buttons. The top
  142.    row is a nice rainbow, the second is greys, and the third (and actually
  143.    part of the second) is the flesh tones. Clicking on these changes the
  144.    Current Color, but does not change the current InstaColor. (To then set 
  145.    the Instacolor, click on the Current Color Window, or adjust the Mixer
  146.    up and back down.) Note that this is the ONLY way to get the flesh tones.
  147.    And look, if your skin doesn't match any of the available colors, I'm 
  148.    sorry, I'm not trying to exclude you. Simply send me the RGB values
  149.    for your skin, and I'll make a personalized version 'specially for you.
  150.  
  151. New: Creates a new sprite. You can select a size from 16x16 to 64x64. Note
  152.    that this isn't necessarily the final size of the sprite--you select that
  153.    when you save. This is just the maximum size.
  154.  
  155. Load: Loads a PBM. Sorry, you have to know what the name of the file is--
  156.    no neat directory listing. Just type in the name, without an extension.
  157.    .PBM will be added.
  158.  
  159. Save: Saves a PBM. Click on the sprite resize window to adjust the size.
  160.    Widths must be multiples of four, which is not a shortcoming since you
  161.    WANT them to be multiples of four for maximum speed. Type in the
  162.    filename, just like when you load a file. If the file already exists,
  163.    you will be asked if you want to overwrite it. 
  164.    If you have a 64x64 sprite, there is an additional selector. You can
  165.    chose to save as one 64x64 bitmap, or as 16 16x16 bitmaps. This is
  166.    really nice for background tiles. The little files will have the name 
  167.    you type in for the filename with the position of each tile added to 
  168.    the end. (So BLAH.PBM turns into BLAH00.PBM, BLAH01.PBM, all the way
  169.    up through BLAH33.PBM.) I use this feature a lot. You can ignore it if
  170.    you want. Note that it's a good idea to save the"big picture" as well,
  171.    since there's no way to re-assemble the parts.
  172.  
  173. To CBM: Saves as a compiled bitmap. Exactly the same as Save in every other
  174.    way. Warning: you can't load CBMs, so if you ever want to reload your
  175.    sprite, better save it as a PBM as well.
  176.  
  177. Exit: Back to the wonderful world of DOS.
  178.  
  179. Starfield: Had to put something in the corner. (If it annoys you, click on
  180.    it and it'll stop.)
  181.  
  182.  
  183. I think that's all.
  184.  
  185.  
  186. RANDOM TECHNICAL NOTES:
  187.  
  188.    The cool mouse cursors are done with the incredibly inefficient but 
  189.    solidly bulletproof method of drawing everything on both a hidden
  190.    and a visible screen page and updating the mouse cursor background
  191.    from the hidden one. Not a good idea for a game, but hey, it works
  192.    fine when things aren't time-critical.
  193.  
  194.    In keeping with this philosophy of inefficiency, I used compiled
  195.    bitmaps for all the graphics. Which is really silly, because except
  196.    for the mouse cursors, they're only drawn once.
  197.  
  198.    All the graphics are linked into the EXE, via 2Obj. Really convienient.
  199.  
  200.    This is my first real C program. I just started learning C two weeks
  201.    ago. Before that, I was an Expert QuickBASIC/PowerBASIC programmer. <g>
  202.    I was under the silly delusion that C is in someway really difficult to
  203.    learn.
  204.  
  205. REALLY WEIRD COMPRESSION THING:
  206.  
  207.    Because of all the linked graphics and stuff, the .EXE for this program
  208.    is over 200K. Eep. So I LZEXE'd it, which compresses it to about 48K.
  209.    Not so odd, since I expected good compression because of the above-
  210.    mentioned inefficient practices, but here's the weird thing: LZEXE, 
  211.    which is free, did a really good job. PKLite, the $150 thing, can only
  212.    compress it to about 70K. (Same thing with plain PKZip, BTW). What's
  213.    going on here? Why does LZEXE to such a better job?
  214.  
  215.  
  216. WHAT TO DO ABOUT ERRORS IN THIS DOC FILE:
  217.  
  218.    Look, deal with it, okay?
  219.  
  220.  
  221. HOW TO REACH ME:
  222.  
  223. e-mail:  mattdm@cedar.goshen.edu
  224.  
  225. BBS:     Matt Miller on Surreal BBS at (219) 262-9371
  226.  
  227. dumb-mail:  Matt Miller
  228.             Goshen College
  229.             Goshen, Indiana  46526
  230.    
  231.